from enum import Enum, unique

@unique
class RACE(Enum):
        Protoss = 1
        Terran = 2
        Zerg = 3

@unique
class UNIT_TYPEID(Enum):
        INVALID = 0

        # Terran
        TERRAN_ARMORY = 29    # CANCEL HALT CANCEL_LAST RESEARCH_TERRANSHIPWEAPONS RESEARCH_TERRANVEHICLEANDSHIPPLATING RESEARCH_TERRANVEHICLEWEAPONS
        TERRAN_AUTOTURRET = 31    # SMART STOP ATTACK
        TERRAN_BANSHEE = 55    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK BEHAVIOR_CLOAKON BEHAVIOR_CLOAKOFF
        TERRAN_BARRACKS = 21    # SMART TRAIN_MARINE TRAIN_REAPER TRAIN_GHOST TRAIN_MARAUDER CANCEL HALT CANCEL_LAST RALLY_UNITS LIFT BUILD_TECHLAB BUILD_REACTOR
        TERRAN_BARRACKSFLYING = 46    # SMART MOVE PATROL HOLDPOSITION STOP LAND BUILD_TECHLAB BUILD_REACTOR
        TERRAN_BARRACKSREACTOR = 38    # CANCEL
        TERRAN_BARRACKSTECHLAB = 37    # RESEARCH_STIMPACK RESEARCH_COMBATSHIELD RESEARCH_CONCUSSIVESHELLS CANCEL CANCEL_LAST
        TERRAN_BATTLECRUISER = 57    # SMART MOVE PATROL HOLDPOSITION EFFECT_YAMATOGUN EFFECT_TACTICALJUMP STOP ATTACK
        TERRAN_BUNKER = 24    # SMART EFFECT_SALVAGE CANCEL HALT UNLOADALL STOP LOAD RALLY_UNITS ATTACK EFFECT_STIM
        TERRAN_COMMANDCENTER = 18    # SMART TRAIN_SCV MORPH_PLANETARYFORTRESS MORPH_ORBITALCOMMAND CANCEL HALT LOADALL UNLOADALL CANCEL_LAST LIFT RALLY_WORKERS
        TERRAN_COMMANDCENTERFLYING = 36    # SMART MOVE PATROL HOLDPOSITION LOADALL UNLOADALL STOP LAND
        TERRAN_CYCLONE = 692   # SMART MOVE PATROL HOLDPOSITION EFFECT_LOCKON CANCEL STOP ATTACK
        TERRAN_ENGINEERINGBAY = 22    # RESEARCH_HISECAUTOTRACKING RESEARCH_TERRANSTRUCTUREARMORUPGRADE RESEARCH_NEOSTEELFRAME CANCEL HALT CANCEL_LAST RESEARCH_TERRANINFANTRYARMOR RESEARCH_TERRANINFANTRYWEAPONS
        TERRAN_FACTORY = 27    # SMART TRAIN_SIEGETANK TRAIN_THOR TRAIN_HELLION TRAIN_HELLBAT TRAIN_CYCLONE TRAIN_WIDOWMINE CANCEL HALT CANCEL_LAST RALLY_UNITS LIFT BUILD_TECHLAB BUILD_REACTOR
        TERRAN_FACTORYFLYING = 43    # SMART MOVE PATROL HOLDPOSITION STOP LAND BUILD_TECHLAB BUILD_REACTOR
        TERRAN_FACTORYREACTOR = 40    # CANCEL
        TERRAN_FACTORYTECHLAB = 39    # RESEARCH_INFERNALPREIGNITER RESEARCH_DRILLINGCLAWS RESEARCH_RAPIDFIRELAUNCHERS RESEARCH_SMARTSERVOS CANCEL CANCEL_LAST
        TERRAN_FUSIONCORE = 30    # RESEARCH_BATTLECRUISERWEAPONREFIT CANCEL HALT CANCEL_LAST
        TERRAN_GHOST = 50    # SMART MOVE PATROL HOLDPOSITION EFFECT_NUKECALLDOWN EFFECT_EMP EFFECT_GHOSTSNIPE CANCEL STOP ATTACK BEHAVIOR_CLOAKON BEHAVIOR_CLOAKOFF BEHAVIOR_HOLDFIREON BEHAVIOR_HOLDFIREOFF
        TERRAN_GHOSTACADEMY = 26    # BUILD_NUKE RESEARCH_PERSONALCLOAKING CANCEL HALT CANCEL_LAST
        TERRAN_HELLION = 53    # SMART MOVE PATROL HOLDPOSITION MORPH_HELLBAT STOP ATTACK
        TERRAN_HELLIONTANK = 484   # SMART MOVE PATROL HOLDPOSITION MORPH_HELLION STOP ATTACK
        TERRAN_LIBERATOR = 689   # SMART MOVE PATROL HOLDPOSITION MORPH_LIBERATORAGMODE STOP ATTACK
        TERRAN_LIBERATORAG = 734   # SMART MORPH_LIBERATORAAMODE STOP ATTACK
        TERRAN_MARAUDER = 51    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK EFFECT_STIM
        TERRAN_MARINE = 48    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK EFFECT_STIM
        TERRAN_MEDIVAC = 54    # SMART MOVE PATROL HOLDPOSITION EFFECT_HEAL EFFECT_MEDIVACIGNITEAFTERBURNERS STOP LOAD UNLOADALLAT ATTACK
        TERRAN_MISSILETURRET = 23    # SMART CANCEL HALT STOP ATTACK
        TERRAN_MULE = 268   # SMART MOVE PATROL HOLDPOSITION STOP HARVEST_GATHER HARVEST_RETURN ATTACK EFFECT_REPAIR
        TERRAN_ORBITALCOMMAND = 132   # SMART EFFECT_CALLDOWNMULE EFFECT_SUPPLYDROP EFFECT_SCAN TRAIN_SCV CANCEL_LAST LIFT RALLY_WORKERS
        TERRAN_ORBITALCOMMANDFLYING = 134   # SMART MOVE PATROL HOLDPOSITION STOP LAND
        TERRAN_PLANETARYFORTRESS = 130   # SMART TRAIN_SCV LOADALL STOP CANCEL_LAST ATTACK RALLY_WORKERS
        TERRAN_RAVEN = 56    # SMART MOVE PATROL HOLDPOSITION EFFECT_POINTDEFENSEDRONE EFFECT_HUNTERSEEKERMISSILE EFFECT_AUTOTURRET STOP ATTACK
        TERRAN_REAPER = 49    # SMART MOVE PATROL HOLDPOSITION EFFECT_KD8CHARGE STOP ATTACK
        TERRAN_REFINERY = 20    # CANCEL HALT
        TERRAN_SCV = 45    # SMART MOVE PATROL HOLDPOSITION BUILD_COMMANDCENTER BUILD_SUPPLYDEPOT BUILD_REFINERY BUILD_BARRACKS BUILD_ENGINEERINGBAY BUILD_MISSILETURRET BUILD_BUNKER BUILD_SENSORTOWER BUILD_GHOSTACADEMY BUILD_FACTORY BUILD_STARPORT BUILD_ARMORY BUILD_FUSIONCORE HALT STOP HARVEST_GATHER HARVEST_RETURN ATTACK EFFECT_SPRAY EFFECT_REPAIR
        TERRAN_SENSORTOWER = 25    # CANCEL HALT
        TERRAN_SIEGETANK = 33    # SMART MOVE PATROL HOLDPOSITION MORPH_SIEGEMODE STOP ATTACK
        TERRAN_SIEGETANKSIEGED = 32    # SMART MORPH_UNSIEGE STOP ATTACK
        TERRAN_STARPORT = 28    # SMART TRAIN_MEDIVAC TRAIN_BANSHEE TRAIN_RAVEN TRAIN_BATTLECRUISER TRAIN_VIKINGFIGHTER TRAIN_LIBERATOR CANCEL HALT CANCEL_LAST RALLY_UNITS LIFT BUILD_TECHLAB BUILD_REACTOR
        TERRAN_STARPORTFLYING = 44    # SMART MOVE PATROL HOLDPOSITION STOP LAND BUILD_TECHLAB BUILD_REACTOR
        TERRAN_STARPORTREACTOR = 42    # CANCEL
        TERRAN_STARPORTTECHLAB = 41    # RESEARCH_BANSHEECLOAKINGFIELD RESEARCH_RAVENCORVIDREACTOR RESEARCH_ENHANCEDMUNITIONS RESEARCH_BANSHEEHYPERFLIGHTROTORS RESEARCH_RAVENRECALIBRATEDEXPLOSIVES RESEARCH_HIGHCAPACITYFUELTANKS RESEARCH_ADVANCEDBALLISTICS CANCEL CANCEL_LAST
        TERRAN_SUPPLYDEPOT = 19    # MORPH_SUPPLYDEPOT_LOWER CANCEL HALT
        TERRAN_SUPPLYDEPOTLOWERED = 47    # MORPH_SUPPLYDEPOT_RAISE
        TERRAN_THOR = 52    # SMART MOVE PATROL HOLDPOSITION MORPH_THORHIGHIMPACTMODE STOP ATTACK
        TERRAN_THORAP = 691   # SMART MOVE PATROL HOLDPOSITION MORPH_THOREXPLOSIVEMODE CANCEL STOP ATTACK
        TERRAN_VIKINGASSAULT = 34    # SMART MOVE PATROL HOLDPOSITION MORPH_VIKINGFIGHTERMODE STOP ATTACK
        TERRAN_VIKINGFIGHTER = 35    # SMART MOVE PATROL HOLDPOSITION MORPH_VIKINGASSAULTMODE STOP ATTACK
        TERRAN_WIDOWMINE = 498   # SMART MOVE PATROL HOLDPOSITION BURROWDOWN STOP ATTACK
        TERRAN_WIDOWMINEBURROWED = 500   # SMART EFFECT_WIDOWMINEATTACK BURROWUP

        # Terran non-interactive
        TERRAN_KD8CHARGE = 830
        TERRAN_NUKE = 58
        TERRAN_POINTDEFENSEDRONE = 11
        TERRAN_REACTOR = 6
        TERRAN_TECHLAB = 5

        # Zerg
        ZERG_BANELING = 9     # SMART MOVE PATROL HOLDPOSITION EFFECT_EXPLODE BEHAVIOR_BUILDINGATTACKON BEHAVIOR_BUILDINGATTACKOFF BURROWDOWN STOP ATTACK
        ZERG_BANELINGBURROWED = 115   # EFFECT_EXPLODE BURROWUP
        ZERG_BANELINGCOCOON = 8     # SMART CANCEL_LAST RALLY_UNITS
        ZERG_BANELINGNEST = 96    # RESEARCH_CENTRIFUGALHOOKS CANCEL CANCEL_LAST
        ZERG_BROODLING = 289   # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_BROODLORD = 114   # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_BROODLORDCOCOON = 113   # SMART MOVE PATROL HOLDPOSITION CANCEL
        ZERG_CHANGELING = 12    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_CHANGELINGMARINE = 15    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_CHANGELINGMARINESHIELD = 14    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_CHANGELINGZEALOT = 13    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_CHANGELINGZERGLING = 17    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_CHANGELINGZERGLINGWINGS = 16    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_CORRUPTOR = 112   # SMART MOVE PATROL HOLDPOSITION MORPH_BROODLORD EFFECT_CAUSTICSPRAY STOP ATTACK
        ZERG_CREEPTUMOR = 87    # CANCEL
        ZERG_CREEPTUMORBURROWED = 137   # SMART CANCEL BUILD_CREEPTUMOR
        ZERG_CREEPTUMORQUEEN = 138   # CANCEL
        ZERG_DRONE = 104   # SMART MOVE PATROL HOLDPOSITION BUILD_HATCHERY BUILD_EXTRACTOR BUILD_SPAWNINGPOOL BUILD_EVOLUTIONCHAMBER BUILD_HYDRALISKDEN BUILD_SPIRE BUILD_ULTRALISKCAVERN BUILD_INFESTATIONPIT BUILD_NYDUSNETWORK BUILD_BANELINGNEST BUILD_ROACHWARREN BUILD_SPINECRAWLER BUILD_SPORECRAWLER BURROWDOWN STOP HARVEST_GATHER HARVEST_RETURN ATTACK EFFECT_SPRAY
        ZERG_DRONEBURROWED = 116   # BURROWUP
        ZERG_EGG = 103   # SMART CANCEL_LAST RALLY_UNITS
        ZERG_EVOLUTIONCHAMBER = 90    # CANCEL CANCEL_LAST RESEARCH_ZERGGROUNDARMOR RESEARCH_ZERGMELEEWEAPONS RESEARCH_ZERGMISSILEWEAPONS
        ZERG_EXTRACTOR = 88    # CANCEL
        ZERG_GREATERSPIRE = 102   # CANCEL_LAST RESEARCH_ZERGFLYERARMOR RESEARCH_ZERGFLYERATTACK
        ZERG_HATCHERY = 86    # SMART MORPH_LAIR RESEARCH_PNEUMATIZEDCARAPACE RESEARCH_BURROW TRAIN_QUEEN CANCEL CANCEL_LAST RALLY_UNITS RALLY_WORKERS
        ZERG_HIVE = 101   # SMART RESEARCH_PNEUMATIZEDCARAPACE RESEARCH_BURROW TRAIN_QUEEN CANCEL_LAST RALLY_UNITS RALLY_WORKERS
        ZERG_HYDRALISK = 107   # SMART MOVE PATROL HOLDPOSITION MORPH_LURKER BURROWDOWN STOP ATTACK
        ZERG_HYDRALISKBURROWED = 117   # BURROWUP
        ZERG_HYDRALISKDEN = 91    # RESEARCH_GROOVEDSPINES RESEARCH_MUSCULARAUGMENTS MORPH_LURKERDEN CANCEL CANCEL_LAST
        ZERG_INFESTATIONPIT = 94    # RESEARCH_PATHOGENGLANDS RESEARCH_NEURALPARASITE CANCEL CANCEL_LAST
        ZERG_INFESTEDTERRANSEGG = 150   # SMART MOVE PATROL HOLDPOSITION
        ZERG_INFESTOR = 111   # SMART MOVE PATROL HOLDPOSITION EFFECT_FUNGALGROWTH EFFECT_INFESTEDTERRANS EFFECT_NEURALPARASITE CANCEL BURROWDOWN STOP ATTACK
        ZERG_INFESTORBURROWED = 127   # SMART MOVE PATROL HOLDPOSITION EFFECT_FUNGALGROWTH EFFECT_INFESTEDTERRANS EFFECT_NEURALPARASITE CANCEL BURROWUP STOP ATTACK
        ZERG_INFESTORTERRAN = 7     # SMART MOVE PATROL HOLDPOSITION BURROWDOWN STOP ATTACK
        ZERG_LAIR = 100   # SMART MORPH_HIVE RESEARCH_PNEUMATIZEDCARAPACE RESEARCH_BURROW TRAIN_QUEEN CANCEL CANCEL_LAST RALLY_UNITS RALLY_WORKERS
        ZERG_LARVA = 151   # TRAIN_DRONE TRAIN_ZERGLING TRAIN_OVERLORD TRAIN_HYDRALISK TRAIN_MUTALISK TRAIN_ULTRALISK TRAIN_ROACH TRAIN_INFESTOR TRAIN_CORRUPTOR TRAIN_VIPER TRAIN_SWARMHOST
        ZERG_LOCUSTMP = 489   # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_LOCUSTMPFLYING = 693   # SMART MOVE PATROL HOLDPOSITION EFFECT_LOCUSTSWOOP STOP ATTACK
        ZERG_LURKERDENMP = 504   # RESEARCH_GROOVEDSPINES RESEARCH_MUSCULARAUGMENTS CANCEL_LAST
        ZERG_LURKERMP = 502   # SMART MOVE PATROL HOLDPOSITION BURROWDOWN STOP ATTACK
        ZERG_LURKERMPBURROWED = 503   # SMART BURROWUP STOP ATTACK BEHAVIOR_HOLDFIREON BEHAVIOR_HOLDFIREOFF
        ZERG_LURKERMPEGG = 501   # SMART CANCEL RALLY_UNITS
        ZERG_MUTALISK = 108   # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        ZERG_NYDUSCANAL = 142   # SMART UNLOADALL STOP LOAD RALLY_UNITS
        ZERG_NYDUSNETWORK = 95    # SMART BUILD_NYDUSWORM CANCEL UNLOADALL STOP LOAD RALLY_UNITS
        ZERG_OVERLORD = 106   # SMART MOVE PATROL HOLDPOSITION MORPH_OVERSEER BEHAVIOR_GENERATECREEPON BEHAVIOR_GENERATECREEPOFF MORPH_OVERLORDTRANSPORT CANCEL STOP ATTACK
        ZERG_OVERLORDCOCOON = 128   # SMART MOVE PATROL HOLDPOSITION CANCEL
        ZERG_OVERLORDTRANSPORT = 893   # SMART MOVE PATROL HOLDPOSITION MORPH_OVERSEER BEHAVIOR_GENERATECREEPON BEHAVIOR_GENERATECREEPOFF STOP LOAD UNLOADALLAT ATTACK
        ZERG_OVERSEER = 129   # SMART MOVE PATROL HOLDPOSITION EFFECT_SPAWNCHANGELING EFFECT_CONTAMINATE STOP ATTACK
        ZERG_QUEEN = 126   # SMART MOVE PATROL HOLDPOSITION EFFECT_INJECTLARVA EFFECT_TRANSFUSION BURROWDOWN STOP ATTACK BUILD_CREEPTUMOR
        ZERG_QUEENBURROWED = 125   # BURROWUP
        ZERG_RAVAGER = 688   # SMART MOVE PATROL HOLDPOSITION EFFECT_CORROSIVEBILE BURROWDOWN STOP ATTACK
        ZERG_RAVAGERCOCOON = 687   # SMART CANCEL RALLY_UNITS
        ZERG_ROACH = 110   # SMART MOVE PATROL HOLDPOSITION MORPH_RAVAGER BURROWDOWN STOP ATTACK
        ZERG_ROACHBURROWED = 118   # SMART MOVE PATROL HOLDPOSITION BURROWUP STOP ATTACK
        ZERG_ROACHWARREN = 97    # RESEARCH_GLIALREGENERATION RESEARCH_TUNNELINGCLAWS CANCEL CANCEL_LAST
        ZERG_SPAWNINGPOOL = 89    # RESEARCH_ZERGLINGADRENALGLANDS RESEARCH_ZERGLINGMETABOLICBOOST CANCEL CANCEL_LAST
        ZERG_SPINECRAWLER = 98    # SMART CANCEL STOP ATTACK MORPH_UPROOT
        ZERG_SPINECRAWLERUPROOTED = 139   # SMART MOVE PATROL HOLDPOSITION CANCEL STOP ATTACK MORPH_ROOT
        ZERG_SPIRE = 92    # MORPH_GREATERSPIRE CANCEL CANCEL_LAST RESEARCH_ZERGFLYERARMOR RESEARCH_ZERGFLYERATTACK
        ZERG_SPORECRAWLER = 99    # SMART CANCEL STOP ATTACK MORPH_UPROOT
        ZERG_SPORECRAWLERUPROOTED = 140   # SMART MOVE PATROL HOLDPOSITION CANCEL STOP ATTACK MORPH_ROOT
        ZERG_SWARMHOSTBURROWEDMP = 493   # SMART EFFECT_SPAWNLOCUSTS BURROWUP
        ZERG_SWARMHOSTMP = 494   # SMART MOVE PATROL HOLDPOSITION EFFECT_SPAWNLOCUSTS BURROWDOWN STOP ATTACK
        ZERG_TRANSPORTOVERLORDCOCOON = 892   # SMART MOVE PATROL HOLDPOSITION CANCEL
        ZERG_ULTRALISK = 109   # SMART MOVE PATROL HOLDPOSITION BURROWDOWN STOP ATTACK
        ZERG_ULTRALISKCAVERN = 93    # RESEARCH_CHITINOUSPLATING CANCEL CANCEL_LAST
        ZERG_VIPER = 499   # SMART MOVE PATROL HOLDPOSITION EFFECT_BLINDINGCLOUD EFFECT_ABDUCT EFFECT_VIPERCONSUME EFFECT_PARASITICBOMB STOP ATTACK
        ZERG_ZERGLING = 105   # SMART MOVE PATROL HOLDPOSITION TRAIN_BANELING BURROWDOWN STOP ATTACK
        ZERG_ZERGLINGBURROWED = 119   # BURROWUP

        # Zerg non-interactive
        ZERG_PARASITICBOMBDUMMY = 824

        # Protoss
        PROTOSS_ADEPT = 311   # SMART MOVE PATROL HOLDPOSITION EFFECT_ADEPTPHASESHIFT CANCEL STOP RALLY_UNITS ATTACK
        PROTOSS_ADEPTPHASESHIFT = 801   # SMART MOVE PATROL HOLDPOSITION CANCEL STOP ATTACK
        PROTOSS_ARCHON = 141   # SMART MOVE PATROL HOLDPOSITION STOP RALLY_UNITS ATTACK
        PROTOSS_ASSIMILATOR = 61    # CANCEL
        PROTOSS_CARRIER = 79    # SMART MOVE PATROL HOLDPOSITION BUILD_INTERCEPTORS STOP CANCEL_LAST ATTACK
        PROTOSS_COLOSSUS = 4     # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        PROTOSS_CYBERNETICSCORE = 72    # RESEARCH_WARPGATE CANCEL CANCEL_LAST RESEARCH_PROTOSSAIRARMOR RESEARCH_PROTOSSAIRWEAPONS
        PROTOSS_DARKSHRINE = 69    # RESEARCH_SHADOWSTRIKE CANCEL CANCEL_LAST
        PROTOSS_DARKTEMPLAR = 76    # SMART MOVE PATROL HOLDPOSITION STOP RALLY_UNITS ATTACK EFFECT_BLINK
        PROTOSS_DISRUPTOR = 694   # SMART MOVE PATROL HOLDPOSITION EFFECT_PURIFICATIONNOVA STOP ATTACK
        PROTOSS_DISRUPTORPHASED = 733   # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        PROTOSS_FLEETBEACON = 64    # RESEARCH_INTERCEPTORGRAVITONCATAPULT RESEARCH_PHOENIXANIONPULSECRYSTALS CANCEL CANCEL_LAST
        PROTOSS_FORGE = 63    # CANCEL CANCEL_LAST RESEARCH_PROTOSSGROUNDARMOR RESEARCH_PROTOSSGROUNDWEAPONS RESEARCH_PROTOSSSHIELDS
        PROTOSS_GATEWAY = 62    # SMART TRAIN_ZEALOT TRAIN_STALKER TRAIN_HIGHTEMPLAR TRAIN_DARKTEMPLAR TRAIN_SENTRY TRAIN_ADEPT MORPH_WARPGATE CANCEL CANCEL_LAST RALLY_UNITS
        PROTOSS_HIGHTEMPLAR = 75    # SMART MOVE PATROL HOLDPOSITION EFFECT_FEEDBACK EFFECT_PSISTORM STOP RALLY_UNITS ATTACK
        PROTOSS_IMMORTAL = 83    # SMART MOVE PATROL HOLDPOSITION EFFECT_IMMORTALBARRIER STOP ATTACK
        PROTOSS_INTERCEPTOR = 85    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        PROTOSS_MOTHERSHIP = 10    # SMART MOVE PATROL HOLDPOSITION EFFECT_PHOTONOVERCHARGE EFFECT_TIMEWARP STOP ATTACK EFFECT_MASSRECALL
        PROTOSS_MOTHERSHIPCORE = 488   # SMART MOVE PATROL HOLDPOSITION MORPH_MOTHERSHIP EFFECT_PHOTONOVERCHARGE EFFECT_TIMEWARP CANCEL STOP ATTACK EFFECT_MASSRECALL
        PROTOSS_NEXUS = 59    # SMART EFFECT_CHRONOBOOST TRAIN_PROBE TRAIN_MOTHERSHIP CANCEL CANCEL_LAST RALLY_WORKERS
        PROTOSS_OBSERVER = 82    # SMART MOVE PATROL HOLDPOSITION STOP ATTACK
        PROTOSS_ORACLE = 495   # SMART MOVE PATROL HOLDPOSITION EFFECT_ORACLEREVELATION BEHAVIOR_PULSARBEAMON BEHAVIOR_PULSARBEAMOFF BUILD_STASISTRAP CANCEL STOP ATTACK
        PROTOSS_ORACLESTASISTRAP = 732   # CANCEL
        PROTOSS_PHOENIX = 78    # SMART MOVE PATROL HOLDPOSITION EFFECT_GRAVITONBEAM CANCEL STOP ATTACK
        PROTOSS_PHOTONCANNON = 66    # SMART CANCEL STOP ATTACK
        PROTOSS_PROBE = 84    # SMART MOVE PATROL HOLDPOSITION BUILD_NEXUS BUILD_PYLON BUILD_ASSIMILATOR BUILD_GATEWAY BUILD_FORGE BUILD_FLEETBEACON BUILD_TWILIGHTCOUNCIL BUILD_PHOTONCANNON BUILD_SHIELDBATTERY BUILD_STARGATE BUILD_TEMPLARARCHIVE BUILD_DARKSHRINE BUILD_ROBOTICSBAY BUILD_ROBOTICSFACILITY BUILD_CYBERNETICSCORE STOP HARVEST_GATHER HARVEST_RETURN ATTACK EFFECT_SPRAY
        PROTOSS_PYLON = 60    # CANCEL
        PROTOSS_PYLONOVERCHARGED = 894   # SMART STOP ATTACK
        PROTOSS_ROBOTICSBAY = 70    # RESEARCH_GRAVITICBOOSTER RESEARCH_GRAVITICDRIVE RESEARCH_EXTENDEDTHERMALLANCE CANCEL CANCEL_LAST
        PROTOSS_ROBOTICSFACILITY = 71    # SMART TRAIN_WARPPRISM TRAIN_OBSERVER TRAIN_COLOSSUS TRAIN_IMMORTAL TRAIN_DISRUPTOR CANCEL CANCEL_LAST RALLY_UNITS
        PROTOSS_SENTRY = 77    # SMART MOVE PATROL HOLDPOSITION EFFECT_GUARDIANSHIELD HALLUCINATION_ARCHON HALLUCINATION_COLOSSUS HALLUCINATION_HIGHTEMPLAR HALLUCINATION_IMMORTAL HALLUCINATION_PHOENIX HALLUCINATION_PROBE HALLUCINATION_STALKER HALLUCINATION_VOIDRAY HALLUCINATION_WARPPRISM HALLUCINATION_ZEALOT EFFECT_FORCEFIELD HALLUCINATION_ORACLE HALLUCINATION_DISRUPTOR HALLUCINATION_ADEPT STOP RALLY_UNITS ATTACK
        PROTOSS_SHIELDBATTERY = 1910   # SMART EFFECT_RESTORE
        PROTOSS_STALKER = 74    # SMART MOVE PATROL HOLDPOSITION STOP RALLY_UNITS ATTACK EFFECT_BLINK
        PROTOSS_STARGATE = 67    # SMART TRAIN_PHOENIX TRAIN_CARRIER TRAIN_VOIDRAY TRAIN_ORACLE TRAIN_TEMPEST CANCEL CANCEL_LAST RALLY_UNITS
        PROTOSS_TEMPEST = 496   # SMART MOVE PATROL HOLDPOSITION EFFECT_TEMPESTDISRUPTIONBLAST CANCEL STOP ATTACK
        PROTOSS_TEMPLARARCHIVE = 68    # RESEARCH_PSISTORM CANCEL CANCEL_LAST
        PROTOSS_TWILIGHTCOUNCIL = 65    # RESEARCH_CHARGE RESEARCH_BLINK RESEARCH_ADEPTRESONATINGGLAIVES CANCEL CANCEL_LAST
        PROTOSS_VOIDRAY = 80    # SMART MOVE PATROL HOLDPOSITION EFFECT_VOIDRAYPRISMATICALIGNMENT STOP ATTACK
        PROTOSS_WARPGATE = 133   # SMART TRAINWARP_ZEALOT TRAINWARP_STALKER TRAINWARP_HIGHTEMPLAR TRAINWARP_DARKTEMPLAR TRAINWARP_SENTRY TRAINWARP_ADEPT MORPH_GATEWAY
        PROTOSS_WARPPRISM = 81    # SMART MOVE PATROL HOLDPOSITION MORPH_WARPPRISMPHASINGMODE STOP LOAD UNLOADALLAT ATTACK
        PROTOSS_WARPPRISMPHASING = 136   # SMART MORPH_WARPPRISMTRANSPORTMODE STOP LOAD UNLOADALLAT
        PROTOSS_ZEALOT = 73    # SMART MOVE PATROL HOLDPOSITION EFFECT_CHARGE STOP RALLY_UNITS ATTACK

        # Protoss non-interactive

        # Neutral
        NEUTRAL_BATTLESTATIONMINERALFIELD = 886
        NEUTRAL_BATTLESTATIONMINERALFIELD750 = 887
        NEUTRAL_COLLAPSIBLEROCKTOWERDEBRIS = 490
        NEUTRAL_COLLAPSIBLEROCKTOWERDIAGONAL = 588
        NEUTRAL_COLLAPSIBLEROCKTOWERPUSHUNIT = 561
        NEUTRAL_COLLAPSIBLETERRANTOWERDEBRIS = 485
        NEUTRAL_COLLAPSIBLETERRANTOWERDIAGONAL = 589
        NEUTRAL_COLLAPSIBLETERRANTOWERPUSHUNIT = 562
        NEUTRAL_COLLAPSIBLETERRANTOWERPUSHUNITRAMPLEFT = 559
        NEUTRAL_COLLAPSIBLETERRANTOWERPUSHUNITRAMPRIGHT = 560
        NEUTRAL_COLLAPSIBLETERRANTOWERRAMPLEFT = 590
        NEUTRAL_COLLAPSIBLETERRANTOWERRAMPRIGHT = 591
        NEUTRAL_DEBRISRAMPLEFT = 486
        NEUTRAL_DEBRISRAMPRIGHT = 487
        NEUTRAL_DESTRUCTIBLEDEBRIS6X6 = 365
        NEUTRAL_DESTRUCTIBLEDEBRISRAMPDIAGONALHUGEBLUR = 377
        NEUTRAL_DESTRUCTIBLEDEBRISRAMPDIAGONALHUGEULBR = 376
        NEUTRAL_DESTRUCTIBLEROCK6X6 = 371
        NEUTRAL_DESTRUCTIBLEROCKEX1DIAGONALHUGEBLUR = 641
        NEUTRAL_FORCEFIELD = 135
        NEUTRAL_KARAKFEMALE = 324
        NEUTRAL_LABMINERALFIELD = 665
        NEUTRAL_LABMINERALFIELD750 = 666
        NEUTRAL_MINERALFIELD = 341
        NEUTRAL_MINERALFIELD750 = 483
        NEUTRAL_PROTOSSVESPENEGEYSER = 608
        NEUTRAL_PURIFIERMINERALFIELD = 884
        NEUTRAL_PURIFIERMINERALFIELD750 = 885
        NEUTRAL_PURIFIERRICHMINERALFIELD = 796
        NEUTRAL_PURIFIERRICHMINERALFIELD750 = 797
        NEUTRAL_PURIFIERVESPENEGEYSER = 880
        NEUTRAL_RICHMINERALFIELD = 146
        NEUTRAL_RICHMINERALFIELD750 = 147
        NEUTRAL_RICHVESPENEGEYSER = 344
        NEUTRAL_SCANTIPEDE = 335
        NEUTRAL_SHAKURASVESPENEGEYSER = 881
        NEUTRAL_SPACEPLATFORMGEYSER = 343
        NEUTRAL_UNBUILDABLEBRICKSDESTRUCTIBLE = 473
        NEUTRAL_UNBUILDABLEPLATESDESTRUCTIBLE = 474
        NEUTRAL_UTILITYBOT = 330
        NEUTRAL_VESPENEGEYSER = 342
        NEUTRAL_XELNAGATOWER = 149

class ABILITY_ID(Enum):
        INVALID = 0
        SMART = 1     # Target: Unit Point.

        ATTACK = 3674  # Target: Unit Point.
        ATTACK_ATTACK = 23    # Target: Unit Point.
        ATTACK_ATTACKBUILDING = 2048  # Target: Unit Point.
        ATTACK_REDIRECT = 1682  # Target: Unit Point.
        BEHAVIOR_BUILDINGATTACKOFF = 2082  # Target: None.
        BEHAVIOR_BUILDINGATTACKON = 2081  # Target: None.
        BEHAVIOR_CLOAKOFF = 3677  # Target: None.
        BEHAVIOR_CLOAKOFF_BANSHEE = 393   # Target: None.
        BEHAVIOR_CLOAKOFF_GHOST = 383   # Target: None.
        BEHAVIOR_CLOAKON = 3676  # Target: None.
        BEHAVIOR_CLOAKON_BANSHEE = 392   # Target: None.
        BEHAVIOR_CLOAKON_GHOST = 382   # Target: None.
        BEHAVIOR_GENERATECREEPOFF = 1693  # Target: None.
        BEHAVIOR_GENERATECREEPON = 1692  # Target: None.
        BEHAVIOR_HOLDFIREOFF = 3689  # Target: None.
        BEHAVIOR_HOLDFIREOFF_LURKER = 2552  # Target: None.
        BEHAVIOR_HOLDFIREON = 3688  # Target: None.
        BEHAVIOR_HOLDFIREON_GHOST = 36    # Target: None.
        BEHAVIOR_HOLDFIREON_LURKER = 2550  # Target: None.
        BEHAVIOR_PULSARBEAMOFF = 2376  # Target: None.
        BEHAVIOR_PULSARBEAMON = 2375  # Target: None.
        BUILD_ARMORY = 331   # Target: Point.
        BUILD_ASSIMILATOR = 882   # Target: Unit.
        BUILD_BANELINGNEST = 1162  # Target: Point.
        BUILD_BARRACKS = 321   # Target: Point.
        BUILD_BUNKER = 324   # Target: Point.
        BUILD_COMMANDCENTER = 318   # Target: Point.
        BUILD_CREEPTUMOR = 3691  # Target: Point.
        BUILD_CREEPTUMOR_QUEEN = 1694  # Target: Point.
        BUILD_CREEPTUMOR_TUMOR = 1733  # Target: Point.
        BUILD_CYBERNETICSCORE = 894   # Target: Point.
        BUILD_DARKSHRINE = 891   # Target: Point.
        BUILD_ENGINEERINGBAY = 322   # Target: Point.
        BUILD_EVOLUTIONCHAMBER = 1156  # Target: Point.
        BUILD_EXTRACTOR = 1154  # Target: Unit.
        BUILD_FACTORY = 328   # Target: Point.
        BUILD_FLEETBEACON = 885   # Target: Point.
        BUILD_FORGE = 884   # Target: Point.
        BUILD_FUSIONCORE = 333   # Target: Point.
        BUILD_GATEWAY = 883   # Target: Point.
        BUILD_GHOSTACADEMY = 327   # Target: Point.
        BUILD_HATCHERY = 1152  # Target: Point.
        BUILD_HYDRALISKDEN = 1157  # Target: Point.
        BUILD_LURKERDENMP = 1163  # Target: Point.
        BUILD_INFESTATIONPIT = 1160  # Target: Point.
        BUILD_INTERCEPTORS = 1042  # Target: None.
        BUILD_MISSILETURRET = 323   # Target: Point.
        BUILD_NEXUS = 880   # Target: Point.
        BUILD_NUKE = 710   # Target: None.
        BUILD_NYDUSNETWORK = 1161  # Target: Point.
        BUILD_NYDUSWORM = 1768  # Target: Point.
        BUILD_PHOTONCANNON = 887   # Target: Point.
        BUILD_PYLON = 881   # Target: Point.
        BUILD_REACTOR = 3683  # Target: None.
        BUILD_REACTOR_BARRACKS = 422   # Target: None.
        BUILD_REACTOR_FACTORY = 455   # Target: None.
        BUILD_REACTOR_STARPORT = 488   # Target: None.
        BUILD_REFINERY = 320   # Target: Unit.
        BUILD_ROACHWARREN = 1165  # Target: Point.
        BUILD_ROBOTICSBAY = 892   # Target: Point.
        BUILD_ROBOTICSFACILITY = 893   # Target: Point.
        BUILD_SENSORTOWER = 326   # Target: Point.
        BUILD_SHIELDBATTERY = 895   # Target: Point.
        BUILD_SPAWNINGPOOL = 1155  # Target: Point.
        BUILD_SPINECRAWLER = 1166  # Target: Point.
        BUILD_SPIRE = 1158  # Target: Point.
        BUILD_SPORECRAWLER = 1167  # Target: Point.
        BUILD_STARGATE = 889   # Target: Point.
        BUILD_STARPORT = 329   # Target: Point.
        BUILD_STASISTRAP = 2505  # Target: Point.
        BUILD_SUPPLYDEPOT = 319   # Target: Point.
        BUILD_TECHLAB = 3682  # Target: None.
        BUILD_TECHLAB_BARRACKS = 421   # Target: None.
        BUILD_TECHLAB_FACTORY = 454   # Target: None.
        BUILD_TECHLAB_STARPORT = 487   # Target: None.
        BUILD_TEMPLARARCHIVE = 890   # Target: Point.
        BUILD_TWILIGHTCOUNCIL = 886   # Target: Point.
        BUILD_ULTRALISKCAVERN = 1159  # Target: Point.
        BURROWDOWN = 3661  # Target: None.
        BURROWDOWN_BANELING = 1374  # Target: None.
        BURROWDOWN_DRONE = 1378  # Target: None.
        BURROWDOWN_HYDRALISK = 1382  # Target: None.
        BURROWDOWN_INFESTOR = 1444  # Target: None.
        BURROWDOWN_LURKER = 2108  # Target: None.
        BURROWDOWN_QUEEN = 1433  # Target: None.
        BURROWDOWN_RAVAGER = 2340  # Target: None.
        BURROWDOWN_ROACH = 1386  # Target: None.
        BURROWDOWN_SWARMHOST = 2014  # Target: None.
        BURROWDOWN_WIDOWMINE = 2095  # Target: None.
        BURROWDOWN_ZERGLING = 1390  # Target: None.
        BURROWUP = 3662  # Target: None.
        BURROWUP_BANELING = 1376  # Target: None.
        BURROWUP_DRONE = 1380  # Target: None.
        BURROWUP_HYDRALISK = 1384  # Target: None.
        BURROWUP_INFESTOR = 1446  # Target: None.
        BURROWUP_LURKER = 2110  # Target: None.
        BURROWUP_QUEEN = 1435  # Target: None.
        BURROWUP_RAVAGER = 2342  # Target: None.
        BURROWUP_ROACH = 1388  # Target: None.
        BURROWUP_SWARMHOST = 2016  # Target: None.
        BURROWUP_WIDOWMINE = 2097  # Target: None.
        BURROWUP_ZERGLING = 1392  # Target: None.
        CANCEL = 3659  # Target: None.
        CANCELSLOT_ADDON = 313   # Target: None.
        CANCELSLOT_QUEUE1 = 305   # Target: None.
        CANCELSLOT_QUEUE5 = 307   # Target: None.
        CANCELSLOT_QUEUECANCELTOSELECTION = 309   # Target: None.
        CANCELSLOT_QUEUEPASSIVE = 1832  # Target: None.
        CANCEL_ADEPTPHASESHIFT = 2594  # Target: None.
        CANCEL_ADEPTSHADEPHASESHIFT = 2596  # Target: None.
        CANCEL_BARRACKSADDON = 451   # Target: None.
        CANCEL_BUILDINPROGRESS = 314   # Target: None.
        CANCEL_CREEPTUMOR = 1763  # Target: None.
        CANCEL_FACTORYADDON = 484   # Target: None.
        CANCEL_GRAVITONBEAM = 174   # Target: None.
        CANCEL_LAST = 3671  # Target: None.
        CANCEL_MORPHBROODLORD = 1373  # Target: None.
        CANCEL_MORPHLAIR = 1217  # Target: None.
        CANCEL_MORPHLURKER = 2333  # Target: None.
        CANCEL_MORPHLURKERDEN = 2113  # Target: None.
        CANCEL_MORPHMOTHERSHIP = 1848  # Target: None.
        CANCEL_MORPHORBITAL = 1517  # Target: None.
        CANCEL_MORPHOVERLORDTRANSPORT = 2709  # Target: None.
        CANCEL_MORPHOVERSEER = 1449  # Target: None.
        CANCEL_MORPHPLANETARYFORTRESS = 1451  # Target: None.
        CANCEL_MORPHRAVAGER = 2331  # Target: None.
        CANCEL_QUEUE1 = 304   # Target: None.
        CANCEL_QUEUE5 = 306   # Target: None.
        CANCEL_QUEUEADDON = 312   # Target: None.
        CANCEL_QUEUECANCELTOSELECTION = 308   # Target: None.
        CANCEL_QUEUEPASIVE = 1831  # Target: None.
        CANCEL_QUEUEPASSIVECANCELTOSELECTION = 1833  # Target: None.
        CANCEL_SPINECRAWLERROOT = 1730  # Target: None.
        CANCEL_STARPORTADDON = 517   # Target: None.
        EFFECT_ABDUCT = 2067  # Target: Unit.
        EFFECT_ADEPTPHASESHIFT = 2544  # Target: Point.
        EFFECT_AUTOTURRET = 1764  # Target: Point.
        EFFECT_BLINDINGCLOUD = 2063  # Target: Point.
        EFFECT_BLINK = 3687  # Target: Point.
        EFFECT_BLINK_STALKER = 1442  # Target: Point.
        EFFECT_CALLDOWNMULE = 171   # Target: Unit Point.
        EFFECT_CAUSTICSPRAY = 2324  # Target: Unit.
        EFFECT_CHARGE = 1819  # Target: Unit.
        EFFECT_CHRONOBOOST = 261   # Target: Unit.
        EFFECT_CONTAMINATE = 1825  # Target: Unit.
        EFFECT_CORROSIVEBILE = 2338  # Target: Point.
        EFFECT_EMP = 1628  # Target: Point.
        EFFECT_EXPLODE = 42    # Target: None.
        EFFECT_FEEDBACK = 140   # Target: Unit.
        EFFECT_FORCEFIELD = 1526  # Target: Point.
        EFFECT_FUNGALGROWTH = 74    # Target: Point.
        EFFECT_GHOSTSNIPE = 2714  # Target: Unit.
        EFFECT_GRAVITONBEAM = 173   # Target: Unit.
        EFFECT_GUARDIANSHIELD = 76    # Target: None.
        EFFECT_HEAL = 386   # Target: Unit.
        EFFECT_HUNTERSEEKERMISSILE = 169   # Target: Unit.
        EFFECT_IMMORTALBARRIER = 2328  # Target: None.
        EFFECT_INFESTEDTERRANS = 247   # Target: Point.
        EFFECT_INJECTLARVA = 251   # Target: Unit.
        EFFECT_KD8CHARGE = 2588  # Target: Unit Point.
        EFFECT_LOCKON = 2350  # Target: Unit.
        EFFECT_LOCUSTSWOOP = 2387  # Target: Point.
        EFFECT_MASSRECALL = 3686  # Target: Unit.
        EFFECT_MASSRECALL_MOTHERSHIP = 2368  # Target: Unit.
        EFFECT_MASSRECALL_MOTHERSHIPCORE = 1974  # Target: Unit.
        EFFECT_MEDIVACIGNITEAFTERBURNERS = 2116  # Target: None.
        EFFECT_NEURALPARASITE = 249   # Target: Unit.
        EFFECT_NUKECALLDOWN = 1622  # Target: Point.
        EFFECT_ORACLEREVELATION = 2146  # Target: Point.
        EFFECT_PARASITICBOMB = 2542  # Target: Unit.
        EFFECT_PHOTONOVERCHARGE = 2162  # Target: Unit.
        EFFECT_POINTDEFENSEDRONE = 144   # Target: Point.
        EFFECT_PSISTORM = 1036  # Target: Point.
        EFFECT_PURIFICATIONNOVA = 2346  # Target: Point.
        EFFECT_REPAIR = 3685  # Target: Unit.
        EFFECT_REPAIR_MULE = 78    # Target: Unit.
        EFFECT_REPAIR_SCV = 316   # Target: Unit.
        EFFECT_RESTORE = 3765      # Target: Unit.
        EFFECT_SALVAGE = 32    # Target: None.
        EFFECT_SCAN = 399   # Target: Point.
        EFFECT_SHADOWSTRIDE = 2700  # Target: Point.
        EFFECT_SPAWNCHANGELING = 181   # Target: None.
        EFFECT_SPAWNLOCUSTS = 2704  # Target: Point.
        EFFECT_SPRAY = 3684  # Target: Point.
        EFFECT_SPRAY_PROTOSS = 30    # Target: Point.
        EFFECT_SPRAY_TERRAN = 26    # Target: Point.
        EFFECT_SPRAY_ZERG = 28    # Target: Point.
        EFFECT_STIM = 3675  # Target: None.
        EFFECT_STIM_MARAUDER = 253   # Target: None.
        EFFECT_STIM_MARINE = 380   # Target: None.
        EFFECT_STIM_MARINE_REDIRECT = 1683  # Target: None.
        EFFECT_SUPPLYDROP = 255   # Target: Unit.
        EFFECT_TACTICALJUMP = 2358  # Target: Point.
        EFFECT_TEMPESTDISRUPTIONBLAST = 2698  # Target: Point.
        EFFECT_TIMEWARP = 2244  # Target: Point.
        EFFECT_TRANSFUSION = 1664  # Target: Unit.
        EFFECT_VIPERCONSUME = 2073  # Target: Unit.
        EFFECT_VOIDRAYPRISMATICALIGNMENT = 2393  # Target: None.
        EFFECT_WIDOWMINEATTACK = 2099  # Target: Unit.
        EFFECT_YAMATOGUN = 401   # Target: Unit.
        HALLUCINATION_ADEPT = 2391  # Target: None.
        HALLUCINATION_ARCHON = 146   # Target: None.
        HALLUCINATION_COLOSSUS = 148   # Target: None.
        HALLUCINATION_DISRUPTOR = 2389  # Target: None.
        HALLUCINATION_HIGHTEMPLAR = 150   # Target: None.
        HALLUCINATION_IMMORTAL = 152   # Target: None.
        HALLUCINATION_ORACLE = 2114  # Target: None.
        HALLUCINATION_PHOENIX = 154   # Target: None.
        HALLUCINATION_PROBE = 156   # Target: None.
        HALLUCINATION_STALKER = 158   # Target: None.
        HALLUCINATION_VOIDRAY = 160   # Target: None.
        HALLUCINATION_WARPPRISM = 162   # Target: None.
        HALLUCINATION_ZEALOT = 164   # Target: None.
        HALT = 3660  # Target: None.
        HALT_BUILDING = 315   # Target: None.
        HALT_TERRANBUILD = 348   # Target: None.
        HARVEST_GATHER = 3666  # Target: Unit.
        HARVEST_GATHER_DRONE = 1183  # Target: Unit.
        HARVEST_GATHER_PROBE = 298   # Target: Unit.
        HARVEST_GATHER_SCV = 295   # Target: Unit.
        HARVEST_RETURN = 3667  # Target: None.
        HARVEST_RETURN_DRONE = 1184  # Target: None.
        HARVEST_RETURN_MULE = 167   # Target: None.
        HARVEST_RETURN_PROBE = 299   # Target: None.
        HARVEST_RETURN_SCV = 296   # Target: None.
        HOLDPOSITION = 18    # Target: None.
        LAND = 3678  # Target: Point.
        LAND_BARRACKS = 554   # Target: Point.
        LAND_COMMANDCENTER = 419   # Target: Point.
        LAND_FACTORY = 520   # Target: Point.
        LAND_ORBITALCOMMAND = 1524  # Target: Point.
        LAND_STARPORT = 522   # Target: Point.
        LIFT = 3679  # Target: None.
        LIFT_BARRACKS = 452   # Target: None.
        LIFT_COMMANDCENTER = 417   # Target: None.
        LIFT_FACTORY = 485   # Target: None.
        LIFT_ORBITALCOMMAND = 1522  # Target: None.
        LIFT_STARPORT = 518   # Target: None.
        LOAD = 3668  # Target: Unit.
        LOADALL = 3663  # Target: None.
        LOADALL_COMMANDCENTER = 416   # Target: None.
        LOAD_BUNKER = 407   # Target: Unit.
        LOAD_MEDIVAC = 394   # Target: Unit.
        MORPH_ARCHON = 1766  # Target: None.
        MORPH_BROODLORD = 1372  # Target: None.
        MORPH_GATEWAY = 1520  # Target: None.
        MORPH_GREATERSPIRE = 1220  # Target: None.
        MORPH_HELLBAT = 1998  # Target: None.
        MORPH_HELLION = 1978  # Target: None.
        MORPH_HIVE = 1218  # Target: None.
        MORPH_LAIR = 1216  # Target: None.
        MORPH_LIBERATORAAMODE = 2560  # Target: None.
        MORPH_LIBERATORAGMODE = 2558  # Target: Point.
        MORPH_LURKER = 2332  # Target: None.
        MORPH_LURKERDEN = 2112  # Target: None.
        MORPH_MOTHERSHIP = 1847  # Target: None.
        MORPH_ORBITALCOMMAND = 1516  # Target: None.
        MORPH_OVERLORDTRANSPORT = 2708  # Target: None.
        MORPH_OVERSEER = 1448  # Target: None.
        MORPH_PLANETARYFORTRESS = 1450  # Target: None.
        MORPH_RAVAGER = 2330  # Target: None.
        MORPH_ROOT = 3680  # Target: Point.
        MORPH_SIEGEMODE = 388   # Target: None.
        MORPH_SPINECRAWLERROOT = 1729  # Target: Point.
        MORPH_SPINECRAWLERUPROOT = 1725  # Target: None.
        MORPH_SPORECRAWLERROOT = 1731  # Target: Point.
        MORPH_SPORECRAWLERUPROOT = 1727  # Target: None.
        MORPH_SUPPLYDEPOT_LOWER = 556   # Target: None.
        MORPH_SUPPLYDEPOT_RAISE = 558   # Target: None.
        MORPH_THOREXPLOSIVEMODE = 2364  # Target: None.
        MORPH_THORHIGHIMPACTMODE = 2362  # Target: None.
        MORPH_UNSIEGE = 390   # Target: None.
        MORPH_UPROOT = 3681  # Target: None.
        MORPH_VIKINGASSAULTMODE = 403   # Target: None.
        MORPH_VIKINGFIGHTERMODE = 405   # Target: None.
        MORPH_WARPGATE = 1518  # Target: None.
        MORPH_WARPPRISMPHASINGMODE = 1528  # Target: None.
        MORPH_WARPPRISMTRANSPORTMODE = 1530  # Target: None.
        MOVE = 16    # Target: Unit Point.
        PATROL = 17    # Target: Unit Point.
        RALLY_BUILDING = 195   # Target: Unit Point.
        RALLY_COMMANDCENTER = 203   # Target: Unit Point.
        RALLY_HATCHERY_UNITS = 212   # Target: Unit Point.
        RALLY_HATCHERY_WORKERS = 211   # Target: Unit Point.
        RALLY_MORPHING_UNIT = 199   # Target: Unit Point.
        RALLY_NEXUS = 207   # Target: Unit Point.
        RALLY_UNITS = 3690  # Target: Unit Point.
        RALLY_WORKERS = 3673  # Target: Unit Point.
        RESEARCH_ADEPTRESONATINGGLAIVES = 1594  # Target: None.
        RESEARCH_ADVANCEDBALLISTICS = 805   # Target: None.
        RESEARCH_BANSHEECLOAKINGFIELD = 790   # Target: None.
        RESEARCH_BANSHEEHYPERFLIGHTROTORS = 799   # Target: None.
        RESEARCH_BATTLECRUISERWEAPONREFIT = 1532  # Target: None.
        RESEARCH_BLINK = 1593  # Target: None.
        RESEARCH_BURROW = 1225  # Target: None.
        RESEARCH_CENTRIFUGALHOOKS = 1482  # Target: None.
        RESEARCH_CHARGE = 1592  # Target: None.
        RESEARCH_CHITINOUSPLATING = 265   # Target: None.
        RESEARCH_COMBATSHIELD = 731   # Target: None.
        RESEARCH_CONCUSSIVESHELLS = 732   # Target: None.
        RESEARCH_DRILLINGCLAWS = 764   # Target: None.
        RESEARCH_ENHANCEDMUNITIONS = 806   # Target: None.
        RESEARCH_EXTENDEDTHERMALLANCE = 1097  # Target: None.
        RESEARCH_GLIALREGENERATION = 216   # Target: None.
        RESEARCH_GRAVITICBOOSTER = 1093  # Target: None.
        RESEARCH_GRAVITICDRIVE = 1094  # Target: None.
        RESEARCH_GROOVEDSPINES = 1282  # Target: None.
        RESEARCH_HIGHCAPACITYFUELTANKS = 804   # Target: None.
        RESEARCH_HISECAUTOTRACKING = 650   # Target: None.
        RESEARCH_INFERNALPREIGNITER = 761   # Target: None.
        RESEARCH_INTERCEPTORGRAVITONCATAPULT = 44    # Target: None.
        RESEARCH_MAGFIELDLAUNCHERS = 766   # Target: None.
        RESEARCH_MUSCULARAUGMENTS = 1283  # Target: None.
        RESEARCH_NEOSTEELFRAME = 655   # Target: None.
        RESEARCH_NEURALPARASITE = 1455  # Target: None.
        RESEARCH_PATHOGENGLANDS = 1454  # Target: None.
        RESEARCH_PERSONALCLOAKING = 820   # Target: None.
        RESEARCH_PHOENIXANIONPULSECRYSTALS = 46    # Target: None.
        RESEARCH_PNEUMATIZEDCARAPACE = 1223  # Target: None.
        RESEARCH_PROTOSSAIRARMOR = 3692  # Target: None.
        RESEARCH_PROTOSSAIRARMORLEVEL1 = 1565  # Target: None.
        RESEARCH_PROTOSSAIRARMORLEVEL2 = 1566  # Target: None.
        RESEARCH_PROTOSSAIRARMORLEVEL3 = 1567  # Target: None.
        RESEARCH_PROTOSSAIRWEAPONS = 3693  # Target: None.
        RESEARCH_PROTOSSAIRWEAPONSLEVEL1 = 1562  # Target: None.
        RESEARCH_PROTOSSAIRWEAPONSLEVEL2 = 1563  # Target: None.
        RESEARCH_PROTOSSAIRWEAPONSLEVEL3 = 1564  # Target: None.
        RESEARCH_PROTOSSGROUNDARMOR = 3694  # Target: None.
        RESEARCH_PROTOSSGROUNDARMORLEVEL1 = 1065  # Target: None.
        RESEARCH_PROTOSSGROUNDARMORLEVEL2 = 1066  # Target: None.
        RESEARCH_PROTOSSGROUNDARMORLEVEL3 = 1067  # Target: None.
        RESEARCH_PROTOSSGROUNDWEAPONS = 3695  # Target: None.
        RESEARCH_PROTOSSGROUNDWEAPONSLEVEL1 = 1062  # Target: None.
        RESEARCH_PROTOSSGROUNDWEAPONSLEVEL2 = 1063  # Target: None.
        RESEARCH_PROTOSSGROUNDWEAPONSLEVEL3 = 1064  # Target: None.
        RESEARCH_PROTOSSSHIELDS = 3696  # Target: None.
        RESEARCH_PROTOSSSHIELDSLEVEL1 = 1068  # Target: None.
        RESEARCH_PROTOSSSHIELDSLEVEL2 = 1069  # Target: None.
        RESEARCH_PROTOSSSHIELDSLEVEL3 = 1070  # Target: None.
        RESEARCH_PSISTORM = 1126  # Target: None.
        RESEARCH_RAPIDFIRELAUNCHERS = 768  # Target: None.
        RESEARCH_RAVENCORVIDREACTOR = 793   # Target: None.
        RESEARCH_RAVENRECALIBRATEDEXPLOSIVES = 803   # Target: None.
        RESEARCH_SHADOWSTRIKE = 2720  # Target: None.
        RESEARCH_SMARTSERVOS = 766 # Target: None.
        RESEARCH_STIMPACK = 730   # Target: None.
        RESEARCH_TERRANINFANTRYARMOR = 3697  # Target: None.
        RESEARCH_TERRANINFANTRYARMORLEVEL1 = 656   # Target: None.
        RESEARCH_TERRANINFANTRYARMORLEVEL2 = 657   # Target: None.
        RESEARCH_TERRANINFANTRYARMORLEVEL3 = 658   # Target: None.
        RESEARCH_TERRANINFANTRYWEAPONS = 3698  # Target: None.
        RESEARCH_TERRANINFANTRYWEAPONSLEVEL1 = 652   # Target: None.
        RESEARCH_TERRANINFANTRYWEAPONSLEVEL2 = 653   # Target: None.
        RESEARCH_TERRANINFANTRYWEAPONSLEVEL3 = 654   # Target: None.
        RESEARCH_TERRANSHIPWEAPONS = 3699  # Target: None.
        RESEARCH_TERRANSHIPWEAPONSLEVEL1 = 861   # Target: None.
        RESEARCH_TERRANSHIPWEAPONSLEVEL2 = 862   # Target: None.
        RESEARCH_TERRANSHIPWEAPONSLEVEL3 = 863   # Target: None.
        RESEARCH_TERRANSTRUCTUREARMORUPGRADE = 651   # Target: None.
        RESEARCH_TERRANVEHICLEANDSHIPPLATING = 3700  # Target: None.
        RESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL1 = 864   # Target: None.
        RESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL2 = 865   # Target: None.
        RESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL3 = 866   # Target: None.
        RESEARCH_TERRANVEHICLEWEAPONS = 3701  # Target: None.
        RESEARCH_TERRANVEHICLEWEAPONSLEVEL1 = 855   # Target: None.
        RESEARCH_TERRANVEHICLEWEAPONSLEVEL2 = 856   # Target: None.
        RESEARCH_TERRANVEHICLEWEAPONSLEVEL3 = 857   # Target: None.
        RESEARCH_TUNNELINGCLAWS = 217   # Target: None.
        RESEARCH_WARPGATE = 1568  # Target: None.
        RESEARCH_ZERGFLYERARMOR = 3702  # Target: None.
        RESEARCH_ZERGFLYERARMORLEVEL1 = 1315  # Target: None.
        RESEARCH_ZERGFLYERARMORLEVEL2 = 1316  # Target: None.
        RESEARCH_ZERGFLYERARMORLEVEL3 = 1317  # Target: None.
        RESEARCH_ZERGFLYERATTACK = 3703  # Target: None.
        RESEARCH_ZERGFLYERATTACKLEVEL1 = 1312  # Target: None.
        RESEARCH_ZERGFLYERATTACKLEVEL2 = 1313  # Target: None.
        RESEARCH_ZERGFLYERATTACKLEVEL3 = 1314  # Target: None.
        RESEARCH_ZERGGROUNDARMOR = 3704  # Target: None.
        RESEARCH_ZERGGROUNDARMORLEVEL1 = 1189  # Target: None.
        RESEARCH_ZERGGROUNDARMORLEVEL2 = 1190  # Target: None.
        RESEARCH_ZERGGROUNDARMORLEVEL3 = 1191  # Target: None.
        RESEARCH_ZERGLINGADRENALGLANDS = 1252  # Target: None.
        RESEARCH_ZERGLINGMETABOLICBOOST = 1253  # Target: None.
        RESEARCH_ZERGMELEEWEAPONS = 3705  # Target: None.
        RESEARCH_ZERGMELEEWEAPONSLEVEL1 = 1186  # Target: None.
        RESEARCH_ZERGMELEEWEAPONSLEVEL2 = 1187  # Target: None.
        RESEARCH_ZERGMELEEWEAPONSLEVEL3 = 1188  # Target: None.
        RESEARCH_ZERGMISSILEWEAPONS = 3706  # Target: None.
        RESEARCH_ZERGMISSILEWEAPONSLEVEL1 = 1192  # Target: None.
        RESEARCH_ZERGMISSILEWEAPONSLEVEL2 = 1193  # Target: None.
        RESEARCH_ZERGMISSILEWEAPONSLEVEL3 = 1194  # Target: None.
        SCAN_MOVE = 19    # Target: Unit Point.
        STOP = 3665  # Target: None.
        STOP_BUILDING = 2057  # Target: None.
        STOP_CHEER = 6     # Target: None.
        STOP_DANCE = 7     # Target: None.
        STOP_REDIRECT = 1691  # Target: None.
        STOP_STOP = 4     # Target: None.
        TRAINWARP_ADEPT = 1419  # Target: Point.
        TRAINWARP_DARKTEMPLAR = 1417  # Target: Point.
        TRAINWARP_HIGHTEMPLAR = 1416  # Target: Point.
        TRAINWARP_SENTRY = 1418  # Target: Point.
        TRAINWARP_STALKER = 1414  # Target: Point.
        TRAINWARP_ZEALOT = 1413  # Target: Point.
        TRAIN_ADEPT = 922   # Target: None.
        TRAIN_BANELING = 80    # Target: None.
        TRAIN_BANSHEE = 621   # Target: None.
        TRAIN_BATTLECRUISER = 623   # Target: None.
        TRAIN_CARRIER = 948   # Target: None.
        TRAIN_COLOSSUS = 978   # Target: None.
        TRAIN_CORRUPTOR = 1353  # Target: None.
        TRAIN_CYCLONE = 597   # Target: None.
        TRAIN_DARKTEMPLAR = 920   # Target: None.
        TRAIN_DISRUPTOR = 994   # Target: None.
        TRAIN_DRONE = 1342  # Target: None.
        TRAIN_GHOST = 562   # Target: None.
        TRAIN_HELLBAT = 596   # Target: None.
        TRAIN_HELLION = 595   # Target: None.
        TRAIN_HIGHTEMPLAR = 919   # Target: None.
        TRAIN_HYDRALISK = 1345  # Target: None.
        TRAIN_IMMORTAL = 979   # Target: None.
        TRAIN_INFESTOR = 1352  # Target: None.
        TRAIN_LIBERATOR = 626   # Target: None.
        TRAIN_MARAUDER = 563   # Target: None.
        TRAIN_MARINE = 560   # Target: None.
        TRAIN_MEDIVAC = 620   # Target: None.
        TRAIN_MOTHERSHIP = 110  # Target: None.
        TRAIN_MOTHERSHIPCORE = 1853  # Target: None.
        TRAIN_MUTALISK = 1346  # Target: None.
        TRAIN_OBSERVER = 977   # Target: None.
        TRAIN_ORACLE = 954   # Target: None.
        TRAIN_OVERLORD = 1344  # Target: None.
        TRAIN_PHOENIX = 946   # Target: None.
        TRAIN_PROBE = 1006  # Target: None.
        TRAIN_QUEEN = 1632  # Target: None.
        TRAIN_RAVEN = 622   # Target: None.
        TRAIN_REAPER = 561   # Target: None.
        TRAIN_ROACH = 1351  # Target: None.
        TRAIN_SCV = 524   # Target: None.
        TRAIN_SENTRY = 921   # Target: None.
        TRAIN_SIEGETANK = 591   # Target: None.
        TRAIN_STALKER = 917   # Target: None.
        TRAIN_SWARMHOST = 1356  # Target: None.
        TRAIN_TEMPEST = 955   # Target: None.
        TRAIN_THOR = 594   # Target: None.
        TRAIN_ULTRALISK = 1348  # Target: None.
        TRAIN_VIKINGFIGHTER = 624   # Target: None.
        TRAIN_VIPER = 1354  # Target: None.
        TRAIN_VOIDRAY = 950   # Target: None.
        TRAIN_WARPPRISM = 976   # Target: None.
        TRAIN_WIDOWMINE = 614   # Target: None.
        TRAIN_ZEALOT = 916   # Target: None.
        TRAIN_ZERGLING = 1343  # Target: None.
        UNLOADALL = 3664  # Target: None.
        UNLOADALLAT = 3669  # Target: Unit Point.
        UNLOADALLAT_MEDIVAC = 396   # Target: Unit Point.
        UNLOADALLAT_OVERLORD = 1408  # Target: Unit Point.
        UNLOADALLAT_WARPPRISM = 913   # Target: Unit Point.
        UNLOADALL_BUNKER = 408   # Target: None.
        UNLOADALL_COMMANDCENTER = 413   # Target: None.
        UNLOADALL_NYDASNETWORK = 1438  # Target: None.
        UNLOADALL_NYDUSWORM = 2371  # Target: None.
        UNLOADUNIT_BUNKER = 410   # Target: None.
        UNLOADUNIT_COMMANDCENTER = 415   # Target: None.
        UNLOADUNIT_MEDIVAC = 397   # Target: None.
        UNLOADUNIT_NYDASNETWORK = 1440  # Target: None.
        UNLOADUNIT_OVERLORD = 1409  # Target: None.
        UNLOADUNIT_WARPPRISM = 914   # Target: None.

class UPGRADE_ID(Enum):
        INVALID = 0
        CARRIERLAUNCHSPEEDUPGRADE = 1
        GLIALRECONSTITUTION = 2
        TUNNELINGCLAWS = 3
        CHITINOUSPLATING = 4
        HISECAUTOTRACKING = 5
        TERRANBUILDINGARMOR = 6
        TERRANINFANTRYWEAPONSLEVEL1 = 7
        TERRANINFANTRYWEAPONSLEVEL2 = 8
        TERRANINFANTRYWEAPONSLEVEL3 = 9
        NEOSTEELFRAME = 10
        TERRANINFANTRYARMORSLEVEL1 = 11
        TERRANINFANTRYARMORSLEVEL2 = 12
        TERRANINFANTRYARMORSLEVEL3 = 13
        STIMPACK = 15
        SHIELDWALL = 16
        PUNISHERGRENADES = 17
        HIGHCAPACITYBARRELS = 19
        BANSHEECLOAK = 20
        RAVENCORVIDREACTOR = 22
        PERSONALCLOAKING = 25
        TERRANVEHICLEWEAPONSLEVEL1 = 30
        TERRANVEHICLEWEAPONSLEVEL2 = 31
        TERRANVEHICLEWEAPONSLEVEL3 = 32
        TERRANSHIPWEAPONSLEVEL1 = 36
        TERRANSHIPWEAPONSLEVEL2 = 37
        TERRANSHIPWEAPONSLEVEL3 = 38
        PROTOSSGROUNDWEAPONSLEVEL1 = 39
        PROTOSSGROUNDWEAPONSLEVEL2 = 40
        PROTOSSGROUNDWEAPONSLEVEL3 = 41
        PROTOSSGROUNDARMORSLEVEL1 = 42
        PROTOSSGROUNDARMORSLEVEL2 = 43
        PROTOSSGROUNDARMORSLEVEL3 = 44
        PROTOSSSHIELDSLEVEL1 = 45
        PROTOSSSHIELDSLEVEL2 = 46
        PROTOSSSHIELDSLEVEL3 = 47
        OBSERVERGRAVITICBOOSTER = 48
        GRAVITICDRIVE = 49
        EXTENDEDTHERMALLANCE = 50
        PSISTORMTECH = 52
        ZERGMELEEWEAPONSLEVEL1 = 53
        ZERGMELEEWEAPONSLEVEL2 = 54
        ZERGMELEEWEAPONSLEVEL3 = 55
        ZERGGROUNDARMORSLEVEL1 = 56
        ZERGGROUNDARMORSLEVEL2 = 57
        ZERGGROUNDARMORSLEVEL3 = 58
        ZERGMISSILEWEAPONSLEVEL1 = 59
        ZERGMISSILEWEAPONSLEVEL2 = 60
        ZERGMISSILEWEAPONSLEVEL3 = 61
        OVERLORDSPEED = 62
        BURROW = 64
        ZERGLINGATTACKSPEED = 65
        ZERGLINGMOVEMENTSPEED = 66
        ZERGFLYERWEAPONSLEVEL1 = 68
        ZERGFLYERWEAPONSLEVEL2 = 69
        ZERGFLYERWEAPONSLEVEL3 = 70
        ZERGFLYERARMORSLEVEL1 = 71
        ZERGFLYERARMORSLEVEL2 = 72
        ZERGFLYERARMORSLEVEL3 = 73
        INFESTORENERGYUPGRADE = 74
        CENTRIFICALHOOKS = 75
        BATTLECRUISERENABLESPECIALIZATIONS = 76
        PROTOSSAIRWEAPONSLEVEL1 = 78
        PROTOSSAIRWEAPONSLEVEL2 = 79
        PROTOSSAIRWEAPONSLEVEL3 = 80
        PROTOSSAIRARMORSLEVEL1 = 81
        PROTOSSAIRARMORSLEVEL2 = 82
        PROTOSSAIRARMORSLEVEL3 = 83
        WARPGATERESEARCH = 84
        CHARGE = 86
        BLINKTECH = 87
        PHOENIXRANGEUPGRADE = 99
        NEURALPARASITE = 101
        TERRANVEHICLEANDSHIPARMORSLEVEL1 = 116
        TERRANVEHICLEANDSHIPARMORSLEVEL2 = 117
        TERRANVEHICLEANDSHIPARMORSLEVEL3 = 118
        DRILLCLAWS = 122
        ADEPTPIERCINGATTACK = 130
        MAGFIELDLAUNCHERS = 133
        EVOLVEGROOVEDSPINES = 134
        EVOLVEMUSCULARAUGMENTS = 135
        BANSHEESPEED = 136
        RAVENRECALIBRATEDEXPLOSIVES = 138
        MEDIVACINCREASESPEEDBOOST = 139
        LIBERATORAGRANGEUPGRADE = 140
        DARKTEMPLARBLINKUPGRADE = 141
        SMARTSERVOS = 289
        RAPIDFIRELAUNCHERS = 291
        ENHANCEDMUNITIONS = 292

class BUFF_ID(Enum):
        INVALID = 0
        GRAVITONBEAM = 5
        GHOSTCLOAK = 6
        BANSHEECLOAK = 7
        POWERUSERWARPABLE = 8
        QUEENSPAWNLARVATIMER = 11
        GHOSTHOLDFIRE = 12
        GHOSTHOLDFIREB = 13
        EMPDECLOAK = 16
        FUNGALGROWTH = 17
        GUARDIANSHIELD = 18
        TIMEWARPPRODUCTION = 20
        NEURALPARASITE = 22
        STIMPACKMARAUDER = 24
        SUPPLYDROP = 25
        STIMPACK = 27
        PSISTORM = 28
        CLOAKFIELDEFFECT = 29
        CHARGING = 30
        SLOW = 33
        CONTAMINATED = 36
        BLINDINGCLOUDSTRUCTURE = 38
        ORACLEREVELATION = 49
        VIPERCONSUMESTRUCTURE = 59
        BLINDINGCLOUD = 83
        MEDIVACSPEEDBOOST = 89
        PURIFY = 97
        ORACLEWEAPON = 99
        IMMORTALOVERLOAD = 102
        LOCKON = 116
        SEEKERMISSILE = 120
        TEMPORALFIELD = 121
        VOIDRAYSWARMDAMAGEBOOST = 122
        ORACLESTASISTRAPTARGET = 129
        PARASITICBOMB = 132
        PARASITICBOMBUNITKU = 133
        PARASITICBOMBSECONDARYUNITSEARCH = 134
        LURKERHOLDFIREB = 137
        CHANNELSNIPECOMBAT = 145
        TEMPESTDISRUPTIONBLASTSTUNBEHAVIOR = 146
        CARRYMINERALFIELDMINERALS = 271
        CARRYHIGHYIELDMINERALFIELDMINERALS = 272
        CARRYHARVESTABLEVESPENEGEYSERGAS = 273
        CARRYHARVESTABLEVESPENEGEYSERGASPROTOSS = 274
        CARRYHARVESTABLEVESPENEGEYSERGASZERG = 275
